package logika;

/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */

/*******************************************************************************
 * Instance třídy PrikazPouzij představují ...
 *
 * @author    Tomáš Koválik
 * @version   1.0
 */
public class PrikazPouzij implements IPrikaz
{
    //== Datové atributy (statické i instancí)======================================
    private static final String NAZEV = "pouzij";
    private Hra hra;

    //== Konstruktory a tovární metody =============================================

    /***************************************************************************
     *  Konstruktor ....
     */
    public PrikazPouzij(Hra hra)
    {
        this.hra = hra;

    }

    //== Nesoukromé metody (instancí i třídy) ======================================
    /**
     *  Metoda pro provedení příkazu ve hře.
     *  Počet parametrů je závislý na konkrétním příkazu,
     *  např. příkazy konec a napoveda nemají parametry
     *  příkazy jdi, seber, polož mají jeden parametr
     *  příkaz pouzij může mít dva parametry.
     *  
     *  @param parametry počet parametrů závisí na konkrétním příkazu.
     *  
     */
    public String proved(String... parametry){
        if(parametry.length == 0){
            return "Co mám použít kámo??";
        }

        String jmeno = parametry[0];

        HerniPlan plan = hra.getHerniPlan();
        Prostor aktProstor = plan.getAktualniProstor();
        Batoh batoh = plan.getBatoh();
        Vec vec = batoh.najdiVecVMistnosti(jmeno);
        if(vec == null){
            return "Tuhle věc nemáš...";
        }
        if (vec.getNazev().equals("bomba") && aktProstor.getNazev().equals("Vez")){
            aktProstor.vlozVec(vec);
            batoh.odeberVec(jmeno);
            Vec odpalovac = new Vec ("odpalovac", true);
            batoh.vlozVec(odpalovac);
            odpalovac.setPopis("Tak tím to zahájíme ohňostroj. Ale musim to použít až v Megatonu.");
            System.out.println("Získal jsi odpalovac.");
            return "Tak a bomba je umístěna...teď jen zajít do Megatonu a použít odpalovač";
        }
        if (vec.getNazev().equals("odpalovac") && aktProstor.getNazev().equals("Megaton")){
            batoh.odeberVec(jmeno);
            hra.setKonecHry(true);
            return "Předal jsi odpalovač Joeovi. Ten odjistil pojistku a zmáčkl malé červené tlačítko. Ozvala se dutá rána a pak již bylo jen vidět jak se Tenpennyho Věž pomalu hrotí k zemi. Tlaková vlna se prohnala pustinou nasledována dunivou ozvěnou excploze. Joe ještě několik chvil koukal do rozvířeného prachu a pote se k tobě otočol. Se slzou radosti a zadostiučinění došel až k tobě. Obejmul tě a řekl: 'Děkuji mockrát...echh...děkuji!..";
        }
        else{
            return "To použít nelze...";
        }
    }

    /**
     *  Metoda vrací název příkazu (slovo které používá hráč pro jeho vyvolání)
     *  
     *  @ return nazev prikazu
     */
    public String getNazev(){
        return NAZEV;
    }

    //== Soukromé metody (instancí i třídy) ========================================

}
